Functors are objects constructed out of functions. OR . It is function with some state.
We will be able to call the objects as functions.
#include <iostream> #include <string.h> struct Value{ int m_result{0}; float m_result2{0.0}; int operator()(int newResult){ m_result=newResult; return newResult; } float operator()(float newResult2){ m_result2=newResult2; return newResult2; } }; int main(int argc, char *argv[]) { Value v; v(52); v(335); // or we can just use v(33.45f); std::cout<<v.m_result<<std::endl<<v.m_result2<<std::endl; ///In this way we can store results in varialbes m_result and m_result2 by just calling functors or using objects as functions. It is one of use of functors. j return 0; }
#include <iostream> #include <string.h> template <class T1, class T2> struct Value{ T1 m_result{0}; T2 m_result2{0.0}; T1 operator()(T1 newResult){ m_result=newResult; return newResult; } T2 operator()(T2 newResult2){ m_result2=newResult2; return newResult2; } }; int main(int argc, char *argv[]) { Value<int, double> v; v(52); v(33.45); // or we can just use v(33.45f); std::cout<<v.m_result<<std::endl<<v.m_result2<<std::endl; /* std::cout<<Value<int, double>(52)<<std::endl; */ ///In this way we can store results in varialbes m_result and m_result2 by just calling functors or using objects as functions. It is one of use of functors. return 0; }
#include <iostream> class MyClass { public: int value; MyClass(int val) : value(val) { std::cout << "Constructor called with value: " << value << std::endl; } ~MyClass() { std::cout << "Destructor called for value: " << value << std::endl; } }; int main() { // Creating and using an anonymous object int result = MyClass(42).value; std::cout << "Result: " << result << std::endl; // Anonymous objects in expressions int sum = MyClass(10).value + MyClass(20).value; std::cout << "Sum: " << sum << std::endl; return 0; }